001 /* 002 * Copyright 2005 Stephen J. McConnell. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 013 * implied. 014 * 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 019 package net.dpml.tools; 020 021 import java.io.File; 022 023 import net.dpml.library.Library; 024 import net.dpml.library.Resource; 025 import net.dpml.library.info.Scope; 026 027 import org.apache.tools.ant.Project; 028 import org.apache.tools.ant.types.Path; 029 030 /** 031 * Project context. 032 * 033 * @author <a href="http://www.dpml.net">Digital Product Meta Library</a> 034 * @version 1.1.0 035 */ 036 public interface Context 037 { 038 /** 039 * Return the associated project. 040 * @return the ant project 041 */ 042 Project getProject(); 043 044 /** 045 * Return the value of a property. 046 * @param key the property key 047 * @return the property value or null if undefined 048 */ 049 String getProperty( String key ); 050 051 /** 052 * Return the value of a property. If the project contains a declaration 053 * for the property then that value will be returned, otherwise the property 054 * will be resolved relative to the current resource. 055 * 056 * @param key the property key 057 * @param value the default value 058 * @return the property value or null if undefined 059 */ 060 String getProperty( String key, String value ); 061 062 /** 063 *Initialize the context. 064 */ 065 void init(); 066 067 /** 068 * Return an Ant path suitable for compile or runtime usage. If the supplied scope is 069 * less than Scope.RUNTIME a runtime path is returned otherwise the test path is 070 * returned. 071 * 072 * @param scope the build scope 073 * @return the path object 074 */ 075 Path getPath( Scope scope ); 076 077 /** 078 * Return the active resource. 079 * @return the resource definition 080 */ 081 Resource getResource(); 082 083 /** 084 * Return the resource library. 085 * @return the library 086 */ 087 Library getLibrary(); 088 089 /** 090 * Return the project source directory. 091 * @return the directory 092 */ 093 File getSrcDirectory(); 094 095 /** 096 * Return the project source main directory. 097 * @return the directory 098 */ 099 File getSrcMainDirectory(); 100 101 /** 102 * Return the project source test directory. 103 * @return the directory 104 */ 105 File getSrcTestDirectory(); 106 107 /** 108 * Return the project source docs directory. 109 * @return the directory 110 */ 111 File getSrcDocsDirectory(); 112 113 /** 114 * Return the project etc directory. 115 * @return the directory 116 */ 117 File getEtcDirectory(); 118 119 /** 120 * Return the project etc/main directory. 121 * @return the directory 122 */ 123 File getEtcMainDirectory(); 124 125 /** 126 * Return the project etc/test directory. 127 * @return the directory 128 */ 129 File getEtcTestDirectory(); 130 131 /** 132 * Return the project etc/data directory. 133 * @return the directory 134 */ 135 File getEtcDataDirectory(); 136 137 /** 138 * Return the project target directory. 139 * @return the directory 140 */ 141 File getTargetDirectory(); 142 143 /** 144 * Return a directory within the target directory. 145 * @param path the path 146 * @return the directory 147 */ 148 File getTargetDirectory( String path ); 149 150 /** 151 * Return the project target temp directory. 152 * @return the directory 153 */ 154 File getTargetTempDirectory(); 155 156 /** 157 * Return the project target build directory. 158 * @return the directory 159 */ 160 File getTargetBuildDirectory(); 161 162 /** 163 * Return the project target build main directory. 164 * @return the directory 165 */ 166 File getTargetBuildMainDirectory(); 167 168 /** 169 * Return the project target build test directory. 170 * @return the directory 171 */ 172 File getTargetBuildTestDirectory(); 173 174 /** 175 * Return the project target build docs directory. 176 * @return the directory 177 */ 178 File getTargetBuildDocsDirectory(); 179 180 /** 181 * Return the project target root classes directory. 182 * @return the directory 183 */ 184 File getTargetClassesDirectory(); 185 186 /** 187 * Return the project target main classes directory. 188 * @return the directory 189 */ 190 File getTargetClassesMainDirectory(); 191 192 /** 193 * Return the project target test classes directory. 194 * @return the directory 195 */ 196 File getTargetClassesTestDirectory(); 197 198 /** 199 * Return the project target reports directory. 200 * @return the directory 201 */ 202 File getTargetReportsDirectory(); 203 204 /** 205 * Return the project target test reports directory. 206 * @return the directory 207 */ 208 File getTargetReportsTestDirectory(); 209 210 /** 211 * Return the project target main reports directory. 212 * @return the directory 213 */ 214 File getTargetReportsMainDirectory(); 215 216 /** 217 * Return the project target javadoc reports directory. 218 * @return the directory 219 */ 220 File getTargetReportsJavadocDirectory(); 221 222 /** 223 * Return the project target reports docs directory. 224 * @return the directory 225 */ 226 File getTargetDocsDirectory(); 227 228 /** 229 * Return the project target test directory. 230 * @return the directory 231 */ 232 File getTargetTestDirectory(); 233 234 /** 235 * Return the project target deliverables directory. 236 * @return the directory 237 */ 238 File getTargetDeliverablesDirectory(); 239 240 /** 241 * Return the project target deliverables directory. 242 * @param type the deliverable type 243 * @return the directory 244 */ 245 File getTargetDeliverable( String type ); 246 247 /** 248 * Create a file relative to the resource basedir. 249 * @param path the relative path 250 * @return the directory 251 */ 252 File createFile( String path ); 253 254 /** 255 * Return a filename using the layout strategy employed by the cache. 256 * @param id the artifact type 257 * @return the filename 258 */ 259 String getLayoutFilename( String id ); 260 261 /** 262 * Return the directory path representing the module structure and type 263 * using the layout strategy employed by the cache. 264 * @param id the artifact type 265 * @return the path from the root of the cache to the directory containing the artifact 266 */ 267 String getLayoutBase( String id ); 268 269 /** 270 * Return the full path to an artifact using the layout employed by the cache. 271 * @param id the artifact type 272 * @return the full path including base path and filename 273 */ 274 String getLayoutPath( String id ); 275 276 /** 277 * Utility operation to construct a new classpath path instance. 278 * @param scope the build scope 279 * @return the path 280 */ 281 Path createPath( Scope scope ); 282 283 /** 284 * Utility operation to construct a new path using a supplied array of resources. 285 * @param resources the resource to use in path construction 286 * @return the path 287 */ 288 Path createPath( Resource[] resources ); 289 290 /** 291 * Utility operation to construct a new path using a supplied array of resources. 292 * @param resources the resources to use in path construction 293 * @param resolve if true force local caching of the artifact 294 * @param filter if true restrict path entries to resources that produce jars 295 * @return the path 296 */ 297 Path createPath( Resource[] resources, boolean resolve, boolean filter ); 298 } 299